<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>GROOPS - gnssParametrizationType</title>

    <!-- JQuery and Popper -->
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>

    <!-- Bootstrap -->
    <!-- https://getbootstrap.com/docs/4.1/examples/ -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    <!-- Mathjax -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({tex2jax: {inlineMath: [ ['$','$'] ],
                                  displayMath: [ ["\\[","\\]"] ],
                                  processEscapes: true},
                        TeX:     {Macros: {M: ["{\\mathbf #1}",1]},
                                  equationNumbers: {autoNumber: "all"}  }});
    </script>
    <script async src="https://cdn.jsdelivr.net/npm/mathjax@2.7.7/MathJax.js?config=TeX-AMS_CHTML" integrity="sha384-e/4/LvThKH1gwzXhdbY2AsjR3rm7LHWyhIG5C0jiRfn8AN2eTN5ILeztWw0H9jmN" crossorigin="anonymous"></script>

    <!-- lunr -->
    <script src="https://cdn.jsdelivr.net/npm/lunr@2.3.8/lunr.min.js" integrity="sha384-vRQ9bDyE0Wnu+lMfm57BlYLO0/XauFuKpVsZPs7KEDwYKktWi5+Kz3MP8++DFlRY" crossorigin="anonymous"></script>

    <!-- Mustache -->
    <script src="https://cdn.jsdelivr.net/npm/mustache@4.0.1/mustache.min.js" integrity="sha384-0PLEZVBpOQ+Kqw3anJWSNWvRxpEFt02tSpBvyRsA4WcvX/OTldWdXxGLVLvh954H" crossorigin="anonymous"></script>

    <!-- GROOPS Stylesheet -->
    <link rel="stylesheet" href="static/groops.css"/>

    <!-- icon -->
    <link rel="icon" href="static/groops_icon.png">

</head>
<body>
    <header>
        <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
            <div class="container">
              <a class="navbar-brand" href="index.html"><img class="logo" src="static/groops_white.svg"></a>
              <div class="collapse navbar-collapse" id="mainNavbar">
                <ul class="navbar-nav mr-auto">
                  <li class="nav-item">
                    <a class="nav-link" href="programType.html">Programs</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="classes.html">Classes</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="general.parser.html">Parser</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="general.fileFormat.html">File Formats</a>
                  </li>
                </ul>
              </div>
                <form class="form-inline my-2 my-lg-0" action="search.html" id="searchTools">
                  <input class="form-control mr-sm-2" placeholder="Search" name="searchTerms" method="GET" value="" type="text" id="searchBox">
                  <button class="btn btn-secondary my-2 my-sm-0" type="submit" id="searchButton">Search</button>
                </form>
              <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation" style="">
                <span class="navbar-toggler-icon"></span>
              </button>
            </div>
        </nav>
    </header>
    <main class="container px-0 pt-2 top-buffer">
        <div id="content" class="container">
            
<h1 id="gnssParametrizationType">GnssParametrization</h1><p>
This class defines the models and parameters of the linearized observation equations
for all phase and code measurements (see <a class="groops-program" href="GnssProcessing.html">GnssProcessing</a>)
\[\label{gnssParametrizationType:model}
  \M l - \M f(\M x_0) = \left.\frac{\partial \M f(\M x)}{\partial \M x}\right|_{\M x_0} \Delta\M x + \M\epsilon,
\]where the left side is the observation vector minus the effects computed from the a priori models.
After each least squares adjustment
(see <a class="groops-class" href="gnssProcessingStepType.html#estimate">GnssProcessing:processingStep:estimate</a>)
the a priori parameters are updated
\[\label{gnssParametrizationType:update}
  \M x_0 := \M x_0 + \Delta\hat{\M x}.
\]The vector $\M x_0$ can be written with
<a class="groops-class" href="gnssProcessingStepType.html#writeAprioriSolution">GnssProcessing:processingStep:writeAprioriSolution</a>.
Any <strong class="groops-config-element">outputfiles</strong> defined in the parametrizations are written with
<a class="groops-class" href="gnssProcessingStepType.html#writeResults">GnssProcessing:processingStep:writeResults</a>.</p><p>Each parametrization (and possible constraint equations) has a <strong class="groops-config-element">name</strong> which enables
activating/deactivating the estimation of subsets of $\Delta\M x$ with
<a class="groops-class" href="gnssProcessingStepType.html#selectParametrizations">GnssProcessing:processingStep:selectParametrizations</a>.
The a priori model $\M f(\M x_0)$ is unaffected and is always reduced.</p><p>The model for the different observation types can be described as
\[\label{gnssParametrizationType:gnssFullModel}
\begin{split}
  f[\tau\nu a]_r^s(\M x) &= \text{geometry}(\M r_r^s) + \text{clock}^s(t) + \text{clock}_r(t) \\
               &+ \text{ionosphere}([\tau\nu],t,\M r_r^s) + \text{troposphere}(t,\M r_r^s) \\
               &+ \text{antenna}[\tau\nu a]^s  + \text{antenna}[\tau\nu a]_r \\
               &+ \text{bias}[\tau\nu a]^s + \text{bias}[\tau\nu a]_r
               + \lambda[L\nu] N[L\nu a]_r^s + \text{other}(\ldots) + \epsilon[\tau\nu a]_r^s
\end{split}
\]The notation $[\tau\nu a]_r^s$ describes the
attribution to a signal type $\tau$ (i.e., C or L), frequency $\nu$,
signal attribute $a$ (e.g., C, W, Q, X), transmitting satellite $s$, and observing receiver $r$.
It follows the <a href="https://files.igs.org/pub/data/format/rinex305.pdf">RINEX 3 definition</a>,
see <a class="groops-ref" href="gnssType.html">GnssType</a>.</p><p>See also <a class="groops-program" href="GnssProcessing.html">GnssProcessing</a>.
</p>

<h2 id="ionosphereSTEC">IonosphereSTEC</h2><p>
The influence of the ionosphere is modelled by a STEC parameter (slant total electron content)
in terms of $[TECU]$ between each transmitter and receiver at each epoch. These parameters are pre-eliminated
from the observation equations before accumulating the normal equations.
This is similar to using the ionosphere-free linear combination as observations
but only one STEC parameter is needed for an arbitrary number of observation types.</p><p>The influence on the code and phase observation is modeled as
\[\label{gnssParametrizationType:IonosphereSTEC:STEC}
\begin{split}
\text{ionosphere}([C\nu], STEC) &=  \frac{40.3}{f_{\nu}^2}STEC + \frac{7525\M b^T\M k}{f_{\nu}^3}STEC +  \frac{r}{f_{\nu}^4}STEC^2 \\
\text{ionosphere}([L\nu], STEC) &= -\frac{40.3}{f_{\nu}^2}STEC - \frac{7525\M b^T\M k}{2f_{\nu}^3}STEC - \frac{r}{3f_{\nu}^4}STEC^2 + \text{bending}(E)STEC^2
\end{split}
\]The second order term depends on the <a class="groops-class" href="magnetosphereType.html">magnetosphere</a> $\M b$
and the direction of the signal $\M k$.</p><p>If further information about the ionosphere is available
(in the form of a prior model or as additional parametrizations
such as <a class="groops-class" href="gnssParametrizationType.html#ionosphereMap">parametrization:ionosphereMap</a> or
<a class="groops-class" href="gnssParametrizationType.html#ionosphereVTEC">parametrization:ionosphereVTEC</a>) the STEC
parameters describe local and short–term scintillations. The STEC parameters are estimated
as additions to the model and it is advised to constrain them towards zero
with a standard deviation of <strong class="groops-config-element">sigmaSTEC</strong>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">apply2ndOrderCorrection</div></div></td><td>boolean</td><td>apply ionospheric correction</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">apply3rdOrderCorrection</div></div></td><td>boolean</td><td>apply ionospheric correction</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">applyBendingCorrection</div></div></td><td>boolean</td><td>apply ionospheric correction</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">magnetosphere</div></div></td><td><a href="magnetosphereType.html">magnetosphere</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">nameConstraint</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">sigmaSTEC</div></div></td><td>expression</td><td>expr. for sigma [TECU] for STEC constraint, variable E (elevation) available</td></tr>
</table>

<h2 id="ionosphereVTEC">IonosphereVTEC</h2><p>
The influence of the ionosphere is modelled by a VTEC parameter (vertical total electron content)
in terms of $[TECU]$ for every selected receiver at each epoch. Optionally, VTEC gradients in the
North (x) and East (y) direction can be estimated via <a class="groops-class" href="parametrizationTemporalType.html">gradient</a>.
The slant TEC is computed based on the VTEC and the optional North and East gradients $\Delta V_x$ and $\Delta V_y$
using the elevation-dependent Modified Single-Layer Model (MSLM) mapping function
\[\label{gnssParametrizationType:IonosphereVTEC:STEC}
  STEC = \frac{VTEC + \cos(A) \Delta V_x + \sin(A) \Delta V_y}{\cos z'}
  \qquad\text{with}\qquad
  \sin z'= \left(\frac{R}{R+H}\right)\sin\left(\alpha(\pi/2-E)\right)
\]inserted into eq. \eqref{gnssParametrizationType:IonosphereSTEC:STEC},
where $A$ is the azimuth angle and $E$ is the elevation angle.</p><p>The result is written as a <a class="groops-file" href="fileFormat_instrument.html">times series file</a> at epochs with observations
depending on <a class="groops-class" href="gnssProcessingStepType.html#selectEpochs">GnssProcessing:processingStep:selectEpochs</a>.</p><p>This class provides a simplified model of the ionosphere for single receivers
and enables the separation of the TEC and signal biases, meaning
<a class="groops-class" href="gnssParametrizationType.html#tecBiases">parametrization:tecBiases</a> becomes estimable.
Local and short-term scintillations should be considered by adding loosely constrained
<a class="groops-class" href="gnssParametrizationType.html#ionosphereSTEC">parametrization:ionosphereSTEC</a>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<ul>

<li><code>&lt;station>:VTEC::&lt;time></code>,
</li><li>
<code>&lt;station>:VTECGradient.x:&lt;temporal>:&lt;interval></code>,
</li><li>
<code>&lt;station>:VTECGradient.y:&lt;temporal>:&lt;interval></code>.
</li></ul>

</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileVTEC</div></div></td><td>filename</td><td>variable {station} available, columns: MJD, VTEC, north gradient, east gradient</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">mapR</div></div></td><td>double</td><td>constant of MSLM mapping function</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">mapH</div></div></td><td>double</td><td>constant of MSLM mapping function</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">mapAlpha</div></div></td><td>double</td><td>constant of MSLM mapping function</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">gradient</div></div></td><td><a href="parametrizationTemporalType.html">parametrizationTemporal</a></td><td>parametrization of north and east gradients</td></tr>
</table>

<h2 id="ionosphereMap">IonosphereMap</h2><p>
Apriori VTEC maps can be removed from the observations with
<a class="groops-class" href="fileFormat_griddedDataTimeSeries.html">inputfileGriddedDataTimeSeries</a>
(e.g. from <a class="groops-program" href="GnssIonex2GriddedDataTimeSeries.html">GnssIonex2GriddedDataTimeSeries</a>).</p><p>The ionosphere is parametrized in terms of $[TECU]$ in a single layer sphere with
<strong class="groops-config-element">radiusIonosphericLayer</strong> as a <a class="groops-class" href="parametrizationTemporalType.html">temporal</a>ly
changing (e.g. hourly linear splines) spherical harmonics expansion
\[
  VTEC(\lambda,\theta,t) = \sum_{n=0}^{n_{max}} \sum_{m=0}^n c_{nm}(t)C_{nm}(\lambda,\theta)+s_{nm}(t)S_{nm}(\lambda,\theta)
\]up to <strong class="groops-config-element">maxDegree</strong>=<code>15</code> in a solar-geomagentic frame defined
by <a class="groops-class" href="magnetosphereType.html">magnetosphere</a>. The VTEC values are mapped to STEC values
in the observation equations via eq. \eqref{gnssParametrizationType:IonosphereVTEC:STEC}.</p><p>The estimated VTEC inclusive the apriori <a class="groops-class" href="fileFormat_griddedDataTimeSeries.html">inputfileGriddedDataTimeSeries</a>
can be written to <a class="groops-class" href="fileFormat_griddedDataTimeSeries.html">outputfileGriddedDataTimeSeries</a>
evaluated at <a class="groops-class" href="gridType.html">outputGrid</a> and <a class="groops-class" href="timeSeriesType.html">outputTimeSeries</a>.</p><p>Local and short-term scintillations should be considered by adding constrained
<a class="groops-class" href="gnssParametrizationType.html#ionosphereSTEC">parametrization:ionosphereSTEC</a>.
To account for signal biases add
<a class="groops-class" href="gnssParametrizationType.html#tecBiases">parametrization:tecBiases</a>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<ul>

<li><code>VTEC:sphericalHarmonics.c_&lt;degree>_&lt;order>:&lt;temporal>:&lt;interval></code>,
</li><li>
<code>VTEC:sphericalHarmonics.s_&lt;degree>_&lt;order>:&lt;temporal>:&lt;interval></code>.
</li></ul>

</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileGriddedDataTimeSeries</div></div></td><td>filename</td><td>single layer VTEC [TECU]</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">outputGrid</div></div></td><td><a href="gridType.html">grid</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">outputTimeSeries</div></div></td><td><a href="timeSeriesType.html">timeSeries</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">inputfileGriddedDataTimeSeries</div></div></td><td>filename</td><td>single layer VTEC [TECU]</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">maxDegree</div></div></td><td>uint</td><td>spherical harmonics parametrization</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">temporal</div></div></td><td><a href="parametrizationTemporalType.html">parametrizationTemporal</a></td><td>temporal evolution of VTEC values</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">radiusIonosphericLayer</div></div></td><td>double</td><td>[m] radius of ionospheric single layer</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">mapR</div></div></td><td>double</td><td>[m] constant of MSLM mapping function</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">mapH</div></div></td><td>double</td><td>[m] constant of MSLM mapping function</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">mapAlpha</div></div></td><td>double</td><td>constant of MSLM mapping function</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">magnetosphere</div></div></td><td><a href="magnetosphereType.html">magnetosphere</a></td><td></td></tr>
</table>

<h2 id="clocks">Clocks</h2><p>
Clock errors are estimated epoch-wise for each <a class="groops-class" href="platformSelectorType.html">selectTransmitter/Receiver</a>.
No clock errors are estimated if no valid observations are available (e.g. data gaps in the observations).</p><p>These parameters are lineary dependent and would lead to a rank deficiency in the normal equation
matrix. To circumvent this issue, the estimation requires an additional zero-mean constraint added in each epoch.
This is realized with an additional observation equation
\[
  0 = \frac{1}{n_i + n_k} (\sum_i \Delta t^{s_i} + \sum_k \Delta t_{r_k})
\]summed over all <a class="groops-class" href="platformSelectorType.html">selectTransmitters/ReceiversZeroMean</a>
with a standard deviation of <strong class="groops-config-element">sigmaZeroMeanConstraint</strong>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are <code>&lt;station or prn>:clock::&lt;time></code>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectTransmitters</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileClockTransmitter</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileClockReceiver</div></div></td><td>filename</td><td>variable {station} available</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">nameConstraint</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectTransmittersZeroMean</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectReceiversZeroMean</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">sigmaZeroMeanConstraint</div></div></td><td>double</td><td>(0 = unconstrained) sigma [m] for zero-mean constraint over all selected clocks</td></tr>
</table>

<h2 id="clocksModel">ClocksModel</h2><p>
This parametrization is an alternative to <a class="groops-class" href="gnssParametrizationType.html#clocks">parametrization:clocks</a>.
Clock errors are estimated epoch-wise for each <a class="groops-class" href="platformSelectorType.html">selectTransmitter/Receiver</a>
and, opposed to <a class="groops-class" href="gnssParametrizationType.html#clocks">parametrization:clocks</a>, are also estimated for epochs
that have no valid observations available (e.g. data gaps).</p><p>The clock error of the an epoch can be predicted by the clock error
of the preceding epoch and an unknown clock drift
\[
  \Delta t_{i+1} = \Delta t_{i} + t_{drift} dt + \epsilon_i.
\]This equation is applied as an additional constraint equation in each epoch
\[
  0 = \Delta t_{i+1} - \Delta t_{i} - t_{drift} dt + \epsilon_i.
\]The variance $\sigma^2(\epsilon)$ is estimated iteratively by variance component estimation (VCE).
Clock jumps are treated as outliers and are automatically downweighted as described in
<a class="groops-class" href="gnssProcessingStepType.html#estimate">GnssProcessing:processingStep:estimate</a>.</p><p>The absolute initial clock error and clock drift cannot be determined if all receiver
and transmitter clocks are estimated together due to their linear dependency.
This linear dependency would lead to a rank deficiency in the normal equation matrix in the same
manner as described in <a class="groops-class" href="gnssParametrizationType.html#clocks">parametrization:clocks</a>.
To circumvent this issue, an additional zero-mean constraint is added in each epoch
as observation equation
\[
  0 = \frac{1}{n_i + n_k} (\sum_i \Delta t^{s_i} + \sum_k \Delta t_{r_k})
\]summed over all <a class="groops-class" href="platformSelectorType.html">selectTransmitters/ReceiversZeroMean</a>.
This should be a loose constraint with a relatively large standard deviation of <strong class="groops-config-element">sigmaZeroMeanConstraint</strong>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are <code>&lt;station or prn>:clock::&lt;time></code>
and <code>&lt;station or prn>:clockDrift::</code>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectTransmitters</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileClockTransmitter</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileClockReceiver</div></div></td><td>filename</td><td>variable {station} available</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">huber</div></div></td><td>double</td><td>clock jumps > huber*sigma0 are downweighted</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">huberPower</div></div></td><td>double</td><td>clock jumps > huber: sigma=(e/huber)^huberPower*sigma0</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">nameConstraint</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectTransmittersZeroMean</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td>use these transmitters for zero-mean constraint</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectReceiversZeroMean</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td>use these receivers for zero-mean constraint</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">sigmaZeroMeanConstraint</div></div></td><td>double</td><td>(0 = unconstrained) sigma [m] for zero-mean constraint over all selected clocks</td></tr>
</table>

<h2 id="signalBiases">SignalBiases</h2><p>
Each code and phase observation (e.g <code>C1C</code> or <code>L2W</code>) contains a bias at transmitter/receiver level
\[
  [\tau\nu a]_r^s(t) = \dots + \text{bias}[\tau\nu a]^s + \text{bias}[\tau\nu a]_r + \dots
\]This class provides the apriori model $\M f(\M x_0)$ of eq. \eqref{gnssParametrizationType:model} only.</p><p>The <a class="groops-class" href="fileFormat_gnssSignalBias.html">inputfileSignalBiasTransmitter/Receiver</a> are read
for each receiver and transmitter. The file name is interpreted as a template with
the variables <code>{prn}</code> and <code>{station}</code> being replaced by the name.
(Infos regarding the variables <code>{prn}</code> and <code>{station}</code> can be found in
<a class="groops-class" href="gnssTransmitterGeneratorType.html">gnssTransmitterGeneratorType</a> and
<a class="groops-class" href="gnssReceiverGeneratorType.html">gnssReceiverGeneratorType</a> respectively). The files can
be converted with <a class="groops-program" href="GnssSinexBias2SignalBias.html">GnssSinexBias2SignalBias</a>.</p><p>The estimation of the biases is complex due to different linear dependencies, which
result in rank deficiencies in the system of normal equations.
For simplification the parametrization for $\Delta\M x$ has been split into:
<a class="groops-class" href="gnssParametrizationType.html#codeBiases">parametrization:codeBiases</a>,
<a class="groops-class" href="gnssParametrizationType.html#tecBiases">parametrization:tecBiases</a>, and
<a class="groops-class" href="gnssParametrizationType.html#ambiguities">parametrization:ambiguities</a> (including phase biases).
The file handling on the other hand still remains within this class. Any prior
values for the receiver/transmitter biases are read with the respective <strong class="groops-config-element">inputFileSignalBias</strong>.
All biases for a receiver/transmitter are accumulated and written to the respective <strong class="groops-config-element">outputFileSignalBias</strong>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectTransmitters</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileSignalBiasTransmitter</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileSignalBiasReceiver</div></div></td><td>filename</td><td>variable {station} available</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">inputfileSignalBiasTransmitter</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">inputfileSignalBiasReceiver</div></div></td><td>filename</td><td>variable {station} available</td></tr>
</table>

<h2 id="ambiguities">Ambiguities</h2><p>
Sets up an ambiguity parameter for each track and phase observation type.
\[
  [L\nu a]_r^s(t) = \dots + \text{bias}[L\nu a]^s + \text{bias}[L\nu a]_r + \lambda[L\nu] N[L\nu a]_r^s
\]As the phase observations contain a float bias at transmitter/receiver level, not all ambiguities
are resolvable to integer values. The number of resolvable ambiguities can be increased with
known phase biases read from file via <a class="groops-class" href="gnssParametrizationType.html#signalBiases">parametrization:signalBiases</a>.
In this case, <a class="groops-class" href="platformSelectorType.html">estimateTransmitter/ReceiverPhaseBiasTransmitter</a> should
not be used for the corresponding transmitters and receivers.</p><p>In case of GLONASS, the phase biases at receiver level differ between different frequency channels
(frequency division multiple access, FDMA) and for each channel an extra float phase bias is estimated.
With <strong class="groops-config-element">linearGlonassBias</strong> a linear relationship between bias and frequency channel is assumed,
which reduces the number of float bias parameters and increases the number of resolvable integer ambiguities.</p><p>The integer ambiguities can be resolved and fixed in
<a class="groops-class" href="gnssProcessingStepType.html#resolveAmbiguities">GnssProcessing:processingStep:resolveAmbiguities</a>.
Resolved integer ambiguities are not estimated as unknown parameters in
<a class="groops-class" href="gnssProcessingStepType.html">gnssProcessingStepType:estimate</a> anymore
and are removed from the system of normal equations.</p><p>The estimated phase biases can be written to files in
<a class="groops-class" href="gnssParametrizationType.html#signalBiases">parametrization:signalBiases</a>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<ul>

<li><code>&lt;station>:phaseBias(&lt;gnssType>)::</code>,
</li><li>
<code>&lt;prn>:phaseBias(&lt;gnssType>)::</code>,
</li><li>
<code>&lt;station>.&lt;prn>:ambiguity&lt;index>of&lt;count>(&lt;GnssTypes>)::&lt;track interval></code>.
</li></ul>

</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">estimateTransmitterPhaseBias</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">estimateReceiverPhaseBias</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">linearGlonassBias</div></div></td><td>boolean</td><td>bias depends linear on frequency channel number</td></tr>
</table>

<h2 id="codeBiases">CodeBiases</h2><p>
Each code observation (e.g <code>C1C</code> or <code>C2W</code>) contains a bias at transmitter/receiver level
\[
  [C\nu a]_r^s(t) = \dots + \text{bias}[C\nu a]^s + \text{bias}[C\nu a]_r + \dots
\]The code biases cannot be estimated together with clock errors and ionospheric delays in an absolute sense
as rank deficiencies will occur in the system of normal equations. Therefore, the biases are not initialized and set up
as parameters directly but only estimable linear combinations are parametrized.</p><p>The basic idea is to set up simplified normal equations with the biases,
clock and STEC parameters of one single receiver or transmitter,
eliminate clock and STEC parameters and perform an eigen value decomposition
of the normal equation matrix
\[
  \M N = \M Q \M\Lambda \M Q^T.
\]Instead of estimating the original bias parameter $\M x$ a transformed set $\bar{\M x}$
is introduced:
\[
  \bar{\M x} = \M Q^T \M x.
\]The new parameters corresponding to eigen values $\lambda>0$ are estimable,
the others are left out (set to zero). The behavior can be controlled by explicitly setting up to two bias types
with <a class="groops-class" href="gnssType.html">typesClockDatum</a> for each transmitter to zero. These then define the ionosphere-free clock datum
of the transmitter. The missing linear combinations,
which depend on the STEC parameters, can be added with
<a class="groops-class" href="gnssParametrizationType.html#tecBiases">parametrization:tecBiases</a>.</p><p>Additional rank deficiencies may also occur when biases of transmitters and receivers are estimated together.
The minimum norm nullspace (also via eigen value decomposition)
is formulated as zero constraint equations and added with a standard deviation of <strong class="groops-config-element">sigmaZeroMeanConstraint</strong>.</p><p>In case of GLONASS the code biases at receiver level can differ between different frequency channels
(frequency division multiple access, FDMA) and for each channel an extra code bias is estimated.
With <strong class="groops-config-element">linearGlonassBias</strong> a linear relationship between bias and frequency channel is assumed,
which reduces the number of bias parameters.</p><p>The estimated biases can be written to files in
<a class="groops-class" href="gnssParametrizationType.html#signalBiases">parametrization:signalBiases</a>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are <code>&lt;station or prn>:codeBias0&lt;index>&lt;combi of gnssTypes>::</code>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectTransmitters</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">linearGlonassBias</div></div></td><td>boolean</td><td>bias depends linear on frequency channel number</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">typesClockDatum</div></div></td><td><a href="gnssType.html">gnssType</a></td><td>first two matching types define the ionosphere free transmitter clock (e.g. C1WG, C2WG)</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">nameConstraint</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">sigmaZeroMeanConstraint</div></div></td><td>double</td><td>(0 = unconstrained) sigma [m] for null space constraint</td></tr>
</table>

<h2 id="tecBiases">TecBiases</h2><p>
Each code observation (e.g <code>C1C</code> or <code>C2W</code>) contains a bias at transmitter/receiver level
\[
  [C\nu a]_r^s(t) = \dots + \text{bias}[C\nu a]^s + \text{bias}[C\nu a]_r + \ldots
\]This parametrization represents the linear combination of signal biases
which completely depend on the STEC parameters. Ignoring these bias combinations would result
in a biased STEC estimation (all other parameters are nearly unaffected).
To determine this part of the signal biases
the <a class="groops-class" href="gnssParametrizationType.html#ionosphereSTEC">parametrization:ionosphereSTEC</a> should be constrained.
Furthermore, additional information about the ionosphere is required from
<a class="groops-class" href="gnssParametrizationType.html#ionosphereVTEC">parametrization:ionosphereVTEC</a> or
<a class="groops-class" href="gnssParametrizationType.html#ionosphereMap">parametrization:ionosphereMap</a>.</p><p>Rank deficiencies due to the signal bias parameters may occur if biases of
transmitters and receivers are estimated together.
The minimum norm nullspace is formulated as zero constraint equations and added with
a standard deviation of <strong class="groops-config-element">sigmaZeroMeanConstraint</strong>.</p><p>The accumulated estimated result can be written to files in
<a class="groops-class" href="gnssParametrizationType.html#signalBiases">parametrization:signalBiases</a>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are <code>&lt;station or prn>:tecBias0&lt;index>&lt;combi of gnssTypes>::</code>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectTransmitters</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">linearGlonassBias</div></div></td><td>boolean</td><td>phase or code biases depend linear on frequency channel number</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">nameConstraint</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">sigmaZeroMeanConstraint</div></div></td><td>double</td><td>(0 = unconstrained) sigma [m] for null space constraint</td></tr>
</table>

<h2 id="temporalBias">TemporalBias</h2><p>
This parametrization resolves the issue of some phase observations suffering from time-variable biases.
Such a phenomenon has been found to affect GPS block IIF satellites on the L5 phase measurements
(see Montenbruck et al. 2011, DOI: <a href="https://doi.org/10.1007/s10291-011-0232-x">10.1007/s10291-011-0232-x</a>).</p><p>For these time-variable biases an appropriate temporal representation has to be defined in
<a class="groops-class" href="parametrizationTemporalType.html">parametrizationTemporal</a>.
For example, time-variable biases for GPS block IIF L5 phase observations (<a class="groops-class" href="gnssType.html">type</a>=<code>L5*G</code>)
can be represented by a cubic spline with a nodal distance of one hour.</p><p>The result is written as a <a class="groops-file" href="fileFormat_instrument.html">times series file</a> at the processing sampling
or the sampling set by <a class="groops-class" href="gnssProcessingStepType.html#selectEpochs">GnssProcessing:processingStep:selectEpochs</a>).</p><p>This parametrization should be set up in addition to the constant
<a class="groops-class" href="gnssParametrizationType.html#signalBiases">parametrization:signalBiases</a>.
Depending on the temporal representation a temporal zero-mean constraint is needed
to separate this parametrization from the constant component. The constraint equations are added with
a standard deviation of <strong class="groops-config-element">sigmaZeroMeanConstraint</strong>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<code>&lt;prn>:signalBias.&lt;gnssType>:&lt;temporal>:&lt;interval></code>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectTransmitters</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileBiasTimeSeries</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">inputfileBiasTimeSeries</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">type</div></div></td><td><a href="gnssType.html">gnssType</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">parametrizationTemporal</div></div></td><td><a href="parametrizationTemporalType.html">parametrizationTemporal</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">nameConstraint</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">sigmaZeroMeanConstraint</div></div></td><td>double</td><td>(0 = unconstrained) sigma [m] for temporal zero-mean constraint</td></tr>
</table>

<h2 id="staticPositions">StaticPositions</h2><p>
Estimates a static position for all
<a class="groops-class" href="platformSelectorType.html">selectReceivers</a> in the terrestrial frame.</p><p>No-net constraints can be applied for a subset of stations,
<a class="groops-class" href="platformSelectorType.html">selectNoNetReceivers</a>, with a
standard deviation of <strong class="groops-config-element">noNetTranslationSigma</strong> and <strong class="groops-config-element">noNetRotationSigma</strong> and <strong class="groops-config-element">noNetScaleSigma</strong>.
If the template <a class="groops-class" href="fileFormat_stringList.html">inputfileNoNetPositions</a> is provided
the constraints are applied relatively to these positions. Only stations with an existing position file
are considered. Without <a class="groops-class" href="fileFormat_stringList.html">inputfileNoNetPositions</a>
the constraints are applied towards the apriori values from
<a class="groops-class" href="gnssReceiverGeneratorType.html">GnssProcessing:receiver</a>.
As a single corrupted station position can disturb the no-net conditions,
the rotation/translation parameters are estimated in a
<a class="groops-ref" href="fundamentals.robustLeastSquares.html">robust least squares adjustment</a>
beforehand. The computed weight matrix is used to downweight corrupted stations
in the constraint equations.</p><p>In case you want to align to an ITRF/IGS reference frame, precise coordinates can be
generated with <a class="groops-program" href="Sinex2StationPositions.html">Sinex2StationPositions</a>.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<ul>

<li><code>&lt;station>:position.x::</code>,
</li><li>
<code>&lt;station>:position.y::</code>,
</li><li>
<code>&lt;station>:position.z::</code>.
</li></ul>

</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileGriddedPosition</div></div></td><td>filename</td><td>delta north east up for all stations</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfilePosition</div></div></td><td>filename</td><td>variable {station} available, full estimated coordinates (in TRF)</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">nameConstraint</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">selectNoNetReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">inputfileNoNetPositions</div></div></td><td>filename</td><td>variable {station} available, precise coordinates used for no-net constraints (in TRF)</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">noNetTranslationSigma</div></div></td><td>double</td><td>(0 = unconstrained) sigma [m] for no-net translation constraint on station coordinates</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">noNetRotationSigma</div></div></td><td>double</td><td>(0 = unconstrained) sigma [m] at Earth's surface for no-net rotation constraint on station coordinates</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">noNetScaleSigma</div></div></td><td>double</td><td>(0 = unconstrained) sigma [m] for no-net scale constraint on station coordinates</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">huber</div></div></td><td>double</td><td>stations > huber*sigma0 are downweighted in no-net constraint</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">huberPower</div></div></td><td>double</td><td>stations > huber: sigma=(e/huber)^huberPower*sigma0</td></tr>
</table>

<h2 id="kinematicPositions">KinematicPositions</h2><p>
Estimates the epoch-wise <a class="groops-class" href="fileFormat_instrument.html">outputfilePositions</a>
in an Earth-fixed frame (or in case of LEO satellites in an intertial frame).</p><p>The $3\times3$ epoch wise <a class="groops-class" href="fileFormat_instrument.html">outputfileCovarianceEpoch</a>
are computed within
<a class="groops-class" href="gnssProcessingStepType.html#computeCovarianceMatrix">GnssProcessing:processingStep:computeCovarianceMatrix</a></p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<ul>

<li><code>&lt;station>:position.x::&lt;time></code>,
</li><li>
<code>&lt;station>:position.y::&lt;time></code>,
</li><li>
<code>&lt;station>:position.z::&lt;time></code>.
</li></ul>

</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfilePositions</div></div></td><td>filename</td><td>variable {station} available, estimated kinematic positions/orbit</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileCovarianceEpoch</div></div></td><td>filename</td><td>variable {station} available, 3x3 epoch covariances</td></tr>
</table>

<h2 id="leoDynamicOrbits">LeoDynamicOrbits</h2><p>
The estimation of (reduced) dynamic orbits is formulated as variational equations.
It is based on <a class="groops-class" href="fileFormat_variationalEquation.html">inputfileVariational</a> calculated with <a class="groops-program" href="PreprocessingVariationalEquation.html">PreprocessingVariationalEquation</a>.
Necessary integrations are performed by integrating a moving interpolation polynomial of degree <strong class="groops-config-element">integrationDegree</strong>.
The <a class="groops-class" href="parametrizationAccelerationType.html">parametrizationAcceleration</a> must include at least those
parameters that were estimated in <a class="groops-program" href="PreprocessingVariationalEquationOrbitFit.html">PreprocessingVariationalEquationOrbitFit</a>.
Additional <a class="groops-class" href="timeSeriesType.html">stochasticPulse</a> parameters can be set up to reduce orbit mismodeling.
If not enough epochs with observations are available (<strong class="groops-config-element">minEstimableEpochsRatio</strong>) the LEO satellite is disabled.</p><p>The parameters and <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are divided into global
<ul>

<li><code>&lt;station>:&lt;parametrizationAcceleration>:*:*</code>,
</li><li>
<code>&lt;station>:stochasticPulse.x::&lt;time></code>,
</li><li>
<code>&lt;station>:stochasticPulse.y::&lt;time></code>,
</li><li>
<code>&lt;station>:stochasticPulse.z::&lt;time></code>,
</li></ul>

and arc related parameters
<ul>

<li><code>&lt;station>:arc&lt;no>.&lt;parametrizationAcceleration>:*:*</code>,
</li><li>
<code>&lt;station>:arc&lt;no>.position0.x::</code>,
</li><li>
<code>&lt;station>:arc&lt;no>.position0.y::</code>,
</li><li>
<code>&lt;station>:arc&lt;no>.position0.z::</code>.
</li><li>
<code>&lt;station>:arc&lt;no>.velocity0.x::</code>,
</li><li>
<code>&lt;station>:arc&lt;no>.velocity0.y::</code>,
</li><li>
<code>&lt;station>:arc&lt;no>.velocity0.z::</code>.
</li></ul>

</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileOrbit</div></div></td><td>filename</td><td>variable {station} available</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileParameters</div></div></td><td>filename</td><td>variable {station} available</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">inputfileVariational</div></div></td><td>filename</td><td>variable {station} available</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">stochasticPulse</div></div></td><td><a href="timeSeriesType.html">timeSeries</a></td><td>[mu/s] parametrization of stochastic pulses</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">parametrizationAcceleration</div></div></td><td><a href="parametrizationAccelerationType.html">parametrizationAcceleration</a></td><td>orbit force parameters</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">ephemerides</div></div></td><td><a href="ephemeridesType.html">ephemerides</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">minEstimableEpochsRatio</div></div></td><td>double</td><td>drop satellites with lower ratio of estimable epochs to total epochs</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">integrationDegree</div></div></td><td>uint</td><td>integration of forces by polynomial approximation of degree n</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">interpolationDegree</div></div></td><td>uint</td><td>for orbit interpolation and velocity calculation</td></tr>
</table>

<h2 id="transmitterDynamicOrbits">TransmitterDynamicOrbits</h2><p>
Same as <a class="groops-class" href="gnssParametrizationType.html#leoDynamicOrbits">leoDynamicOrbits</a> but
for transmitting GNSS satellites.
For more details see <a class="groops-ref" href="cookbook.gnssNetwork.html#orbitIntegration">orbit integration</a>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectTransmitters</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileOrbit</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileParameters</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">inputfileVariational</div></div></td><td>filename</td><td>variable {prn} available</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">stochasticPulse</div></div></td><td><a href="timeSeriesType.html">timeSeries</a></td><td>[mu/s] parametrization of stochastic pulses</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">parametrizationAcceleration</div></div></td><td><a href="parametrizationAccelerationType.html">parametrizationAcceleration</a></td><td>orbit force parameters</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">ephemerides</div></div></td><td><a href="ephemeridesType.html">ephemerides</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">minEstimableEpochsRatio</div></div></td><td>double</td><td>drop satellites with lower ratio of estimable epochs to total epochs</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">integrationDegree</div></div></td><td>uint</td><td>integration of forces by polynomial approximation of degree n</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">interpolationDegree</div></div></td><td>uint</td><td>for orbit interpolation and velocity calculation</td></tr>
</table>

<h2 id="troposphere">Troposphere</h2><p>
A priori tropospheric correction is handled by a <a class="groops-class" href="troposphereType.html">troposphere</a> model (e.g. Vienna Mapping Functions 3).
Additional parameters in $[m]$ for zenith wet delay and gradients can be set up via
<a class="groops-class" href="parametrizationTemporalType.html">troposphereWetEstimation</a> (usually 2-hourly linear splines)
and <a class="groops-class" href="parametrizationTemporalType.html">troposphereGradientEstimation</a> (usually a daily trend).
These parameters can be soft-constrained using
<a class="groops-class" href="gnssParametrizationType.html#constraints">parametrization:constraints</a>
to avoid an unsolvable system of normal equations in case of data gaps.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<ul>

<li><code>&lt;station>:troposphereWet:&lt;temporal>:&lt;interval></code>,
</li><li>
<code>&lt;station>:troposphereGradient.x:&lt;temporal>:&lt;interval></code>,
</li><li>
<code>&lt;station>:troposphereGradient.y:&lt;temporal>:&lt;interval></code>.
</li></ul>

</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileTroposphere</div></div></td><td>filename</td><td>columns: MJD, ZHD, ZWD, dry north gradient, wet north gradient, dry east gradient, wet east gradient, ...</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">troposphere</div></div></td><td><a href="troposphereType.html">troposphere</a></td><td>a priori troposphere model</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">troposphereWetEstimation</div></div></td><td><a href="parametrizationTemporalType.html">parametrizationTemporal</a></td><td>[m] parametrization of zenith wet delays</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">troposphereGradientEstimation</div></div></td><td><a href="parametrizationTemporalType.html">parametrizationTemporal</a></td><td>[degree] parametrization of north and east gradients</td></tr>
</table>

<h2 id="earthRotation">EarthRotation</h2><p>
Earth rotation parameters (ERPs) can be estimated by defining
<strong class="groops-config-element">estimatePole</strong> ($x_p$, $y_p\, [mas]$) and <strong class="groops-config-element">estimateUT1</strong> ($dUT1\, [ms], LOD$).</p><p>Estimating length of day (LOD) with the sign according to IGS conventions requires a negative
value in <a class="groops-class" href="parametrizationTemporalType.html#trend">parametrizationTemporal:trend:timeStep</a>.</p><p>Constraints on the defined parameters can be added via
<a class="groops-class" href="gnssParametrizationType.html#constraints">parametrization:constraints</a>.
An example would be to set up <a class="groops-class" href="parametrizationTemporalType.html#constant">estimateUT1:constant</a>
so the $dUT1$ parameter is included in the normal equation system . Since $dUT1$ cannot be
determined by GNSS, a hard constraint to its a priori value can then be added.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<ul>

<li><code>earth:polarMotion.xp:&lt;temporal>:&lt;interval></code>,
</li><li>
<code>earth:polarMotion.yp:&lt;temporal>:&lt;interval></code>,
</li><li>
<code>earth:UT1:&lt;temporal>:&lt;interval></code>,
</li><li>
<code>earth:nutation.X:&lt;temporal>:&lt;interval></code>,
</li><li>
<code>earth:nutation.>:&lt;temporal>:&lt;interval></code>.
</li></ul>

</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileEOP</div></div></td><td>filename</td><td>EOP time series (mjd, xp, yp, sp, dUT1, LOD, X, Y, S)</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">estimatePole</div></div></td><td><a href="parametrizationTemporalType.html">parametrizationTemporal</a></td><td>xp, yp [mas]</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">estimateUT1</div></div></td><td><a href="parametrizationTemporalType.html">parametrizationTemporal</a></td><td>rotation angle [ms]</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">estimateNutation</div></div></td><td><a href="parametrizationTemporalType.html">parametrizationTemporal</a></td><td>dX, dY [mas]</td></tr>
</table>

<h2 id="receiverAntennas">ReceiverAntennas</h2><p>
This class is for parametrization the antenna for their antenna center offsets (ACO) and
antenna center variations (ACV) by <a class="groops-class" href="parametrizationGnssAntennaType.html">antennaCenterVariations</a>.
The receivers to be estimated can be selected by <a class="groops-class" href="platformSelectorType.html">selectReceivers</a>.</p><p>The amount of patterns to be estimated is configurable with a list of <a class="groops-class" href="gnssType.html">patternTypes</a>.
For each added <a class="groops-class" href="gnssType.html">patternTypes</a> a set of parameters will be evaluated. The observations
will be assigned to the first <a class="groops-class" href="gnssType.html">patternTypes</a> that matches their own.
E.g. having the patterns: <code>***G</code> and <code>L1*</code> would lead to all GPS observations be assigned
to the observation equations of the first pattern. The patterntype <code>L1*</code> would then consist
of all other GNSS L1 phase observations. <strong class="groops-config-element">addNonMatchingTypes</strong> will, if activated, create automatically patterns
for <a class="groops-class" href="gnssType.html">observations</a> that are not selected within the list <a class="groops-class" href="gnssType.html">patternTypes</a>.
Furthermore, it is possible to group same antenna build types from different receivers by <strong class="groops-config-element">groupAntennas</strong>.
The grouping by same antenna build ignores antenna serial numbers.</p><p>To estimate the antenna variation parameters, a longer period of observations might be necessary
for accurate estimations. Hence one should use this parametrization by
accumulating normal equations from several epochs.
This can be accomplished as the last steps in the <a class="groops-class" href="gnssProcessingStepType.html">processing steps</a>
 by adding <a class="groops-class" href="gnssParametrizationType.html#receiverAntennas">ReceiverAntennas</a>
to current selected parameters with <a class="groops-class" href="gnssProcessingStepType.html#selectParametrizations">GnssProcessing:processingStep:selectParametrizations</a>
and write the normal equation matrix with <a class="groops-class" href="gnssProcessingStepType.html#writeNormalEquations">GnssProcessing:processingStep:writeNormalEquations</a>.
The written normal equations can then be accumulated with <a class="groops-program" href="NormalsAccumulate.html">NormalsAccumulate</a> and solved by <a class="groops-program" href="NormalsSolverVCE.html">NormalsSolverVCE</a>.
Further, one should apply constraints to the normal equations by <a class="groops-program" href="GnssAntennaNormalsConstraint.html">GnssAntennaNormalsConstraint</a> since the estimation
 of ACO and ACV can lead to rank deficiencies in the normal equation matrix.
Last the solved normal equation can be parsed to a <a class="groops-file" href="fileFormat_gnssAntennaDefinition.html">antenna definition file</a>
 with the program <a class="groops-program" href="ParameterVector2GnssAntennaDefinition.html">ParameterVector2GnssAntennaDefinition</a>.</p><p>As example referring to the cookbook <a class="groops-ref" href="cookbook.gnssNetwork.html">GNSS satellite orbit determination and station network analysis</a>,
one could add additionally <a class="groops-class" href="gnssParametrizationType.html#receiverAntennas">receiverAntennas</a> as parametrization.
Since the estimations are done on a daily basis for each receiver we add an additional
<a class="groops-class" href="gnssProcessingStepType.html#selectParametrizations">selectParametrizations</a> which
disables <code>parameter.receiverAntenna</code>. After all stations are processed together with all parameters, one
adds <code>parameter.receiverAntenna</code> with <a class="groops-class" href="gnssProcessingStepType.html#selectParametrizations">selectParametrizations</a>
 to the current selected parametrizations.
The last <a class="groops-class" href="gnssProcessingStepType.html">processingStep</a> is <a class="groops-class" href="gnssProcessingStepType.html#writeNormalEquations">GnssProcessing:processingStep:writeNormalEquations</a>
to write the daily normal equations including the parametrization <a class="groops-class" href="gnssParametrizationType.html#receiverAntennas">receiverAntennas</a> into files.
These normal equation files are then processed with the programs:</p><p><ul>

  <li><a class="groops-program" href="NormalsAccumulate.html">NormalsAccumulate</a>: accumulates normal equations.
  </li><li>
<a class="groops-program" href="GnssAntennaNormalsConstraint.html">GnssAntennaNormalsConstraint</a>: apply constraint to the normal equations.
  </li><li>
<a class="groops-program" href="NormalsSolverVCE.html">NormalsSolverVCE</a>: solves the normal equations.
  </li><li>
<a class="groops-program" href="ParameterVector2GnssAntennaDefinition.html">ParameterVector2GnssAntennaDefinition</a>: writes the solution into a <a class="groops-file" href="fileFormat_gnssAntennaDefinition.html">antenna definition file</a>
</li></ul>
</p><p>Note that the apriori value $\M x_0$ for this parametrization is always zero and never updated
according to eq. \eqref{gnssParametrizationType:update}.</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<code>&lt;antennaName>:&lt;antennaCenterVariations>.&lt;gnssType>::</code>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectReceivers</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">antennaCenterVariations</div></div></td><td><a href="parametrizationGnssAntennaType.html">parametrizationGnssAntenna</a></td><td>estimate antenna center variations</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">patternTypes</div></div></td><td><a href="gnssType.html">gnssType</a></td><td>gnssType for each pattern (first match is used)</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">addNonMatchingTypes</div></div></td><td>boolean</td><td>add patterns for additional observed gnssTypes that don't match any of the above</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">groupAntennas</div></div></td><td>boolean</td><td>common ACVs for same antenna build types (ignores antenna serial number)</td></tr>
</table>

<h2 id="transmitterAntennas">TransmitterAntennas</h2><p>
Same as <a class="groops-class" href="gnssParametrizationType.html#receiverAntennas">receiverAntennas</a> but
for transmitting antennas (GNSS satellites).</p><p>The <a class="groops-file" href="fileFormat_parameterName.html">parameter names</a> are
<code>&lt;antennaName>:&lt;antennaCenterVariations>.&lt;gnssType>::</code>.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td>used for parameter selection</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">selectTransmitters</div></div></td><td><a href="platformSelectorType.html">platformSelector</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">antennaCenterVariations</div></div></td><td><a href="parametrizationGnssAntennaType.html">parametrizationGnssAntenna</a></td><td>estimate antenna center variations</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional-unbounded">patternTypes</div></div></td><td><a href="gnssType.html">gnssType</a></td><td>gnssType for each pattern (first match is used)</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">addNonMatchingTypes</div></div></td><td>boolean</td><td>add patterns for additional observed gnssTypes that don't match any of the above</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">groupAntennas</div></div></td><td>boolean</td><td>common ACVs for same antenna build types (ignores antenna serial number)</td></tr>
</table>

<h2 id="constraints">Constraints</h2><p>
Add a pseudo observation equation (constraint)
for each selected <a class="groops-class" href="parameterSelectorType.html">parameters</a>
\[
  b-x_0 = 1 \cdot dx + \epsilon,
\]where $b$ is the <strong class="groops-config-element">bias</strong> and $x_0$ is the a priori value of the parameter
if <strong class="groops-config-element">relativeToApriori</strong> is not set.
The standard deviation <strong class="groops-config-element">sigma</strong> is used to weight the observation equations.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">name</div></div></td><td>string</td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">parameters</div></div></td><td><a href="parameterSelectorType.html">parameterSelector</a></td><td>parameter to constrain</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">sigma</div></div></td><td>double</td><td>sigma of the constraint (same unit as parameter)</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">bias</div></div></td><td>double</td><td>constrain all selected parameters towards this value</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">relativeToApriori</div></div></td><td>boolean</td><td>constrain only dx and not full x=dx+x0</td></tr>
</table>

<h2 id="group">Group</h2><p>
Groups a set of parameters. This class can be used to structure complex parametrizations
and has no further effect itself.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">parametrization</div></div></td><td><a href="gnssParametrizationType.html">gnssParametrization</a></td><td></td></tr>
</table>

        </div>
    </main>
</body>
</html>
